package com.zhuqi.service.session;

import com.zhuqi.session.user.UserSession;
import io.netty.channel.Channel;

import java.util.List;
import java.util.Map;

/**
 * @author ZhuQi
 * @ClassName Session
 * @Date 2023/1/13 15:27
 * @Version 1.0
 * @Description 回话管理接口
 */
public interface Session {

    /**
     * 绑定会话
     * @param channel 那个 channel 要绑定会话
     * @param userName 会话绑定的用户
     */
    void bind(Channel channel, String userName);

    /**
     * 解除会话绑定
     * @param channel 那个 Channel 要解绑会话
     */
    void unbind(Channel channel);



    /**
     * 根据用户名获取 Channel
     * @param userName 用户名
     * @return channel
     */
    Channel getChannel(String userName);


	/**
	 * 用户登出
	 * @param name 用户名
	 */
	 void logOutUser(String name);

	Map<Channel, List<UserSession>>  getChannelUserSessionMap();

	void safeDelete();

}
